//package DianShang.ds_03.feature
//
//import org.apache.spark.ml.feature.{OneHotEncoder, VectorAssembler}
//import org.apache.spark.ml.Pipeline
//import org.apache.spark.sql.{SparkSession, functions => F}
//object test {
//  def main(args: Array[String]): Unit = {
//
//
//    val spark = SparkSession.builder.appName("UserItemMatrix").getOrCreate()
//
//    // 假设你有一个DataFrame包含'user_id_mapping'和'sku_id_mapping'列
//    val sortedUserSkuDF = spark.sql("SELECT user_id_mapping, sku_id_mapping FROM sorted_user_sku_mapping")
//
//    // 创建VectorAssembler来组合特征列
//    val assembler = new VectorAssembler()
//      .setInputCols(Array("sku_id_mapping"))
//      .setOutputCol("features")
//
//    // 创建OneHotEncoder来进行one-hot编码
//    val encoder = new OneHotEncoder()
//      .setInputCol("features")
//      .setOutputCols(Array("sku_id_onehot"))
//
//    // 创建Pipeline来执行上述操作
//    val pipeline = new Pipeline().setStages(Array(assembler, encoder))
//    val model = pipeline.fit(sortedUserSkuDF)
//    val oneHotUserSkuDF = model.transform(sortedUserSkuDF)
//
//    // 对用户进行聚合，以获取one-hot编码的商品信息
//    val aggregatedDF = oneHotUserSkuDF.groupBy("user_id_mapping").agg(F.max("sku_id_onehot").alias("sku_features"))
//
//    // 对结果进行逆向操作，拆分one-hot编码的商品信息列
//    val resultDF = aggregatedDF.selectExpr("user_id_mapping", (0 until oneHotUserSkuDF.select("sku_id_mapping").distinct().count.toInt)
//      .map(i => s"CAST(sku_features[$i] AS DOUBLE) AS sku_id$i"): _*)
//
//    // 输出第一行前5列数据
//    resultDF.limit(5).show(truncate = false)
//
//  }
//
//}
